# 元组的操作
# 1.创建元组

a = ()
print(type(a))

b = tuple()
print(type(b))

# 2.创建元组的时候，指定初始值
a = (1, 2, 3, 4)
print(a)

# 3.元组中的元素也可以是任意类型的
a = (1, 2, 'hello', True, [])
print(a)

# 4. 通过下标来访问[]元组中的元素，下标也是从0开始到len-1结束
a = (1, 2, 3, 4)
print(a[1])
print(a[-1])
# print(a[100]) 超出范围会抛异常

# 5.通过切片来获得元组中的一个部分
a = (1, 2, 3, 4)
print(a[1:3])
#  也可以省略

# 6.也可以使用for循环等方式来进行遍历元素
a = (1, 2, 3, 4)
for elem in a:
    print(elem)

# 7.使用in判定元素是否存在， 使用index查找 元素的下标
a = (1, 2, 3, 4)
print(3 in a)
print(a.index(3))

# 8.使用+来拼接两个元组
a = (1, 2, 3)
b = (4, 5, 6)
print(a+b)


# 上述操作都是只读的，是对元组中的值进行读取，而没有修改

# 9.元组只能支持“读”操作，不能支持“修改”类操作
# a = (1, 2, 3)
# a[2]=100        # error
# a.append(5)     # error
# a.pop()         # error
# a.extend()      # error

# 10.当进行多元赋值的时候，其实本质上是按照元组的方式进行工作的~~
def getPoint():
    x = 10
    y = 20
    return x, y


x, y = getPoint()
print(type(getPoint()))


# 元组的用途：
# 协同开发的时候，一个程序猿A实现一些功能，提供给程序猿B来使用
# A写好一些函数让B调用，函数肯定要传参
# B在传参的时候就可能会纠结一个问题：我把我的参数传过去了，A的函数里面是否会把我的参数内容给改了呢？
# 如果使用元组作为参数，就可以避免这种情况
# 元组是不可对象，是可以哈希的！

